<?php
// 注册安全模块：防止用户名路径遍历攻击和非法字符
function sanitizeUsername($username) {
    // 过滤非法字符：只允许字母、数字、下划线、中文 
    $sanitized = preg_replace('/[^\p{L}\p{N}_]/u', '', $username);
    
    // 防止目录遍历攻击 
    $sanitized = str_replace(['../', './', '/', '\\'], '', $sanitized);
    
    return $sanitized;
}

// 增强型用户名验证
function validateUsername($username) {
    // 检查过滤后是否为空
    if (mb_strlen($username) === 0) {
        return "用户名包含非法字符，请重新输入";
    }
    
    // 检查长度 (2-20字符)
    if (mb_strlen($username) < 2 || mb_strlen($username) > 20) {
        return "用户名长度需在2-20个字符之间";
    }
    
    // 检查保留名称
    $reservedNames = ['admin', 'root', 'system', 'user'];
    if (in_array(strtolower($username), $reservedNames)) {
        return "该用户名已被保留";
    }
    
    // 检查非法词汇
    $illegalWords = ['非法支付', '赌博', '诈骗', '色情', '毒品', '暴力', '恐怖'];
    foreach ($illegalWords as $word) {
        if (mb_stripos($username, $word) !== false) {
            return "用户名包含非法词汇";
        }
    }
    
    return null;
}
?>